package com.example.spider.proxy.core;

public enum ProxyStrategy {

    /**
     * 不能使用代理
     */
    no,

    /**
     * 负载均衡-轮询
     * @deprecated 不推荐，建议增加权重
     */
    roundRobin,

    /**
     * 负载均衡-加权轮询（根据评分轮询，每轮每proxy最少一次，最多proxy.score/20）
     */
    weightRoundRobin,

    /**
     * 负载均衡-随机代理，可以是本机
     * @deprecated 不推荐，建议增加权重
     */
    random,

    /**
     * 负载均衡-加权随机
     */
    weightRandom,

    /**
     * 负载均衡-目标url地址hash（）
     */
    urlHash,

    /**
     * 局部最优-最久未使用的（不适合ipproxy选择算法，容易拿到不可用的）
     */
    //lru,

    /**
     * 局部最优-最近使用最少的（不适合ipproxy选择算法，容易拿到不可用的）
     */
    //lfu,

    /**
     * 局部最优-整体成功率最高（容易导致只用一台代理。不推荐）
     */
//    highestSuccessPercentageFirst,

    /**
     * 局部最优-整体评分最高（容易导致只用一台代理。不推荐）
     */
//    highestScoreFirst,

    /**
     * 负载均衡-最近请求响应时间最小的（容易导致只用一台代理。不推荐）
     */
//    minCostFirst,

    /**
     * 使用任务里指定的
     * 失败了则更换代理、更换随机代理、使用本机、放弃
     */
    given

    ;

}
